'use strict'

import { app, BrowserWindow, Menu, nativeImage, Tray } from 'electron'
import '../renderer/store'
import path from 'path'
import services from './services/index'
import appConfig from '../../package.json'

if (process.env.NODE_ENV !== 'development') {
  global.__static = require('path')
    .join(__dirname, '/static')
    .replace(/\\/g, '\\\\')
}

// 是否开发模式
const IS_DEV = process.env.NODE_ENV === 'development'

let mainWindow

const winURL = IS_DEV
  ? `http://localhost:9080`
  : `file://${__dirname}/index.html`

let appIcon, icon, tray

/**
 * 程序初始化
 */
function init() {
  appIcon = path.join(__static, './icons/logo.png')
  icon = path.join(__static, './icons/logo.ico')

  // 托盘功能
  tray = new Tray(nativeImage.createFromPath(appIcon))

  // 托盘tip
  tray.setToolTip(appConfig.applicationName)

  // 托盘右键菜单
  const contextMenu = Menu.buildFromTemplate([
    {
      label: '退出程序',
      click: () => {
        // 隐藏窗口
        mainWindow.hide()
        // 程序退出
        app.quit()
        // 退出程序进程
        app.exit()
      }
    }
  ])

  // 托盘设置右键菜单
  tray.setContextMenu(contextMenu)

  // 托盘双击显示程序
  tray.on('double-click', function () {
    mainWindow.show()
  })
}
/**
 * 创建主窗口
 */
function createWindow() {
  init()
  const winConfig = {
    height: 550,
    width: 800,
    minHeight: 550,
    minWidth: 800,
    // 窗体缩放
    titleBarStyle: 'hidden',
    // 隐藏边框
    frame: false,
    center: !IS_DEV,
    // 背景透明
    transparent: IS_DEV,
    // 置顶
    // alwaysOnTop: true,
    // 任务栏图标
    icon,
    webPreferences: {
      devTools: IS_DEV,
      nodeIntegration: true,
      contextIsolation: false,
      webSecurity: false,
      enableRemoteModule: true,
      webviewTag: true
    }
  }

  if (IS_DEV) {
    winConfig['x'] = 1000
    winConfig['y'] = 100
  }

  mainWindow = new BrowserWindow(winConfig)

  mainWindow.setTitle(appConfig.applicationName)

  mainWindow.loadURL(winURL)

  services({ mainWindow, app })

  app.setName(appConfig.applicationName)

  mainWindow.on('closed', () => {
    mainWindow = null
  })
}

/**
 * 设置任务栏右键菜单
 */
app.setUserTasks([])

app.on('ready', createWindow)

app.on('window-all-closed', () => {
  if (process.platform !== 'darwin') {
    // 隐藏窗口
    mainWindow.hide()
    // 程序退出
    app.quit()
    // 退出程序进程
    app.exit()
  }
})

app.on('activate', () => {
  if (mainWindow === null) {
    createWindow()
  }
})

/**
 * 程序退出前销毁托盘图标
 */
app.on('before-quit', function (evt) {
  tray.destroy()
})
